'''
请下载：https://archive.ics.uci.edu/ml/machine-learning-databases/wine/  白酒数据
并取其中类别标签为一类和二类的白酒数据生成新的白酒数据，对新的白酒数据，
利用PCA和LDA进行降维处理，PCA降维以后列出其两维特征
PCA 原理参考：   https://blog.csdn.net/program_developer/article/details/80632779
LDA 原理参考：    https://cloud.tencent.com/developer/article/1422161
'''

import pandas as pd
from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis as LDA

# 加载数据
data = pd.read_csv('data/wine.data', header=None)
print(data)
# 选择类别标签为一类和二类的数据
data = data[data[0].isin([1, 2])]

print(data)

# 分离特征和类别标签
X = data.loc[:, 1:].values
y = data.loc[:, 0].values

# 标准化特征
X = StandardScaler().fit_transform(X)
print(X)
# PCA降维
pca = PCA(n_components=2)
X_pca = pca.fit_transform(X)

# LDA降维
lda = LDA(n_components=1)
X_lda = lda.fit_transform(X, y)

# 打印PCA降维后的两维特征
print("---------------------------------------")
print("PCA :\n", X_pca)
# 打印LDA降维后的一维特征
print("---------------------------------------")
print("LDA :\n",X_lda)